# -*- coding: utf-8 -*-
# @Author: QX
# @File: day8_0082ditumutiltouch.py
#白盒测试----走读代码
from appium import webdriver
from appium.webdriver.common.multi_action import MultiAction
from appium.webdriver.common.touch_action import TouchAction
import time

desired_caps = {
    'platformName': 'Android',  # 根据实际情况填写平台名称
    'platformVersion': '12',  # 填写设备的操作系统版本
    'deviceName': 'ba08213e',  # 填写设备名称
    'automationName': 'uiautomator2',
    'appPackage': 'com.autonavi.minimap',  # 填写要操作的地图应用包名
    'appActivity': 'com.autonavi.map.activity.NewMapActivity',  # 填写地图应用的启动Activity
    'noReset': True  # 根据需要设置是否重置应用状态
}

driver = webdriver.Remote('http://127.0.0.1:4723', desired_caps)  # 连接到 Appium 服务器
driver.implicitly_wait(30)  # 设置隐式等待时间
#'noReset': True有这个参数再要加的语句，这个语句的作用激活应用
driver.activate_app('com.autonavi.minimap')



class MultiActionExample:
    def __init__(self):
        #得到屏幕的高和宽
        self.screen_width = driver.get_window_size()['width']
        self.screen_height = driver.get_window_size()['height']

    # 放大操作
    def screen_pinch(self):
        #生成第一根指头
        first_finger = TouchAction(driver)
        # 生成第根二指头
        second_finger = TouchAction(driver)
        #生成多指对象
        zoom_finger = MultiAction(driver)
        #第一根指头的操作步骤
        first_finger.press(x=self.screen_width * 0.4, y=self.screen_height * 0.4).wait(1000).move_to(
            x=self.screen_width * 0.2, y=self.screen_height * 0.2).wait(1000).release()
        # 第二根指头的操作步骤
        second_finger.press(x=self.screen_width * 0.6, y=self.screen_height * 0.6).wait(1000).move_to(
            x=self.screen_width * 0.8, y=self.screen_height * 0.8).release()

        zoom_finger.add(first_finger, second_finger)
        zoom_finger.perform()
        time.sleep(3)

    # 缩小操作
    def screen_zoom(self):
        first_finger = TouchAction(driver)
        second_finger = TouchAction(driver)
        zoom_finger = MultiAction(driver)

        first_finger.press(x=self.screen_width * 0.2, y=self.screen_height * 0.2).wait(1000).move_to(
            x=self.screen_width * 0.4, y=self.screen_height * 0.4).wait(1000).release()
        second_finger.press(x=self.screen_width * 0.8, y=self.screen_height * 0.8).wait(1000).move_to(
            x=self.screen_width * 0.6, y=self.screen_height * 0.6).wait(1000).release()

        zoom_finger.add(first_finger, second_finger)
        zoom_finger.perform()
        time.sleep(3)


if __name__ == '__main__':
    ma = MultiActionExample()
    import time

    time.sleep(5)  # 等待一段时间，确保地图应用加载完成

    for _ in range(3):  # 执行放大操作 3 次
        ma.screen_pinch()

    for _ in range(4):  # 执行缩小操作 4 次
        ma.screen_zoom()
